This description relates to processing transactions in a distributed computing system.
A database is a structured set of persistent data that can be managed and queried using a software program. A transactional database management system is a relational database system that operates on (e.g., stores and manipulates) data in a database using database “transactions.” In general, a database transaction symbolizes a single unit of work (including one or more operations) performed by the database management system on the database. To ensure that database transactions are processed reliably, database transactions must be atomic (i.e., a transaction, including all of its one or more operations, must either complete in its entirety or have no effect whatsoever), consistent (i.e., a transaction must move the database from one valid state to another valid state), isolated (i.e., concurrently executing transactions result in the same state in the database as would result if the transactions were executed serially), and durable (i.e., a committed transaction will remain committed regardless of system crashes, errors, and other issues). This set of properties of a database transaction is sometimes referred to as “ACID.”
In some situations, one or more of the ACID properties may be relaxed under certain conditions, especially on systems for which strict adherence to ACID properties is challenging (e.g., distributed systems). In other situations, it is important that transactions retain ACID properties, even when a database is distributed among a number of database nodes. In a distributed system such as a distributed database, any distributed algorithm used to support any ACID properties needs to be implemented in a way that avoids deadlock among the nodes, as described in more detail below. However, for certain distributed algorithms (e.g., two-phase commit for atomic commitment, or two-phase locking for concurrency control) providing the ability to detect actual deadlock situations, or guaranteeing strict deadlock avoidance at all times, has consequences for system performance.